﻿
#ifndef DATABASE_H
#define DATABASE_H
#include <QTextCodec>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QTime>
#include <QSqlError>
#include <QtDebug>
#include <QSqlDriver>
#include <QSqlRecord>

/*!
  @addtogroup  userDataInfo Patient information class
  @{
*/
//数据库对象
/**
 * @brief 数据库操作核心类（私有实现）
 * 
 * 封装数据库连接管理、查询执行及事务处理等底层操作
 */
class DataBasePri
{
public:
    /**
     * @brief 构造函数
     * @warning 自动初始化数据库连接参数
     */
    DataBasePri();
    /**
     * @brief 构造函数
     * @warning 自动初始化数据库连接参数
     * @note 连接池实现细节：
     * - 检查已有"sqllite"连接复用
     * - 新建连接时指定QSQLITE驱动
     * - 配置数据库文件/用户名/密码等参数
     * - 自动创建系统表结构
     */
    ~DataBasePri();

    /**
     * @brief 建立数据库连接
     * @return true-连接成功 false-连接失败
     * @note 使用QSqlDatabase维护连接池
     */
    bool connectDB();

    /**
     * @brief 关闭数据库连接
     * @note 自动回滚未提交事务并释放连接资源
     */
    void closeDB();

    //获取某个表数据
    static QVector<QVector<QString>> queryAll(QString tablename);
    /**
     * @brief 执行全表查询
     * @param tablename 目标表名
     * @return 二维数组形式的结果集
     * @warning 字段硬编码警告：
     * - 当前固定遍历40个字段
     * - 实际字段数可能不一致
     * - 建议改用record().count()动态获取列数
     * @note 自动管理数据库连接生命周期
     */

public:
    static  QSqlDatabase database;
    /**
     * @brief 数据库连接对象
     * @note 关联说明：
     * - 使用静态成员维护数据库连接池
     * - 生命周期与应用程序一致
     * - 通过connectDB()/closeDB()管理连接状态
     */
};

#endif // DATABASE_H
